敏感信息泄露
0x01 等保测评项
GBT 22239-2019《信息安全技术 网络安全等级保护基本要求》中,8.1.4.4安全计算环境—入侵防范项中要求包括:a)应遵循最小安装的原则,仅安装需要的组件和应用程序;b)应关闭不需要的系统服务、默认共享和高危端口;c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求;e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞;f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。敏感信息泄漏对应访问控制项中要求d),所以安全控制点为入侵防范d。
GBT 28448-2019《信息安全技术 网络安全等级保护测评要求》中,测评单元(L3-CES1-21) 该测评单元包括以下要求: a)测评指标:应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞。;b)测评对象:终端和服务器等设备中的操作系统(包括宿主机和虚拟主机操作系统)、网络设备(包括虚拟网络设备)、安全设备(包括虚拟安全设备)、移动终端、移动终端管理系统、移动终端管理客户端、感知节点设备、网关节点设备、控制设备、业务应用系统、数据库管理系统、中间件和系统管理软件等。c)测评实施包括以下内容: 1)应通过漏洞扫描、渗透测试等方式核查是否不存在高危风险漏洞; 2)应核查是否在经过充分测试评估后及时修补漏洞;d)单元判定:如果1)和2)均为肯定,则符合本测评单元指标要求,否则不符合或部分符合本测评单元指标要求敏感信息泄漏属于测评单元(L3-CES1-21)中测评实施的第1项,故定测评单元为L3-CES1-21.1。
0x02 测试内容
检测目标系统是否存在敏感信息泄露漏洞,如管理后台对外、错误页面返回服务器、网上能搜索到密码本、源代码等信息。
0x03 漏洞原理
简介
敏感信息(也称作敏感数据)是指由权威机构确定的必须受保护的信息。不当使用或未经授权被人接触或修改后,会产生不利于国家和组织的负面影响和利益损失,或不利于个人依法享有的个人隐私的所有信息。敏感信息根据其信息种类的不同,可大致分为个人敏感信息、商业敏感信息、国家的敏感信息。
敏感信息包括但不限于:账号、密码、密钥、证书、会话标识、License、隐私数据(如短消息的内容)、授权凭据、个人数据(姓名、住址、电话、身份证号码)、程序文件、配置文件、日志文件、备份文件及数据库、网站物理地址、phpinfo信息、代码、服务器端口、banner信息等。
比如,渗透测试时在URL后添加随机字符,使网站报错,某些未经过安全设置的网站就会暴露中间件信息、版本号、框架、CMS、物理地址、本页代码、数据库配置文件代码等等。产生原因
1. 由于后台人员的疏忽或设计不当,导致不应该被前端用户看到的数据被轻易访问到;
2. 发布时未能从公共内容中删除内部内容;
3. 网站和相关技术的不安全配置。例如,未能禁用调试和诊断功能,有时可以为攻击者提供有用的工具来帮助他们获取敏感信息。默认配置也可能使网站遭到攻击。
4. 应用程序的设计和行为有缺陷。例如,如果某网站在发生不同的错误状态时返回不同的响应,攻击者可据此枚举敏感数据。
敏感信息虽然一直被评为危害比较低的漏洞,但是这些敏感信息往往在攻击实战中提供着很大的帮助,甚至能直接造成严重的损失,所以在开发时不仅要进行安全的代码编写,也需要注意对敏感信息的合理处理。
分类
操作系统
• 开启的端口、服务(namp)
• 操作系统的类型与版本(Wappalyzer)
中间件
• http返回头
• 404报错页面
• 使用工具(如whatweb)
Web程序
• CMS类型、版本、敏感信息
• 工具(whatweb、cms_identify、Wappalyzer)
• phpinfo()信息泄漏
http://[ip]/test.php
http://[ip]/phpinfo.php• 测试页面泄漏在外网
test.cgi
phpinfo.php
info.php等• 编辑器备份文件泄漏在外网
http://[ip]/test.php.swp
http://[ip]/test.php.bak
http://[ip]/test.jsp.old
http://[ip]/cgi~• 版本管理工具(如git)文件信息泄漏
http://[ip]/.git/config
http://[ip]/CVS/Entriesp
http://[ip]/.svn/entriesp• HTTP认证信息泄漏
http://[ip]/basic/index.php
• 管理后台地址泄漏
http://[ip]/login.php
http://[ip]/admin.php
http://[ip]/manager.php
http://[ip]/admin_login.php• 泄漏员工邮箱、分机号码
• 泄漏邮箱及分机号码可被社工,也可生成字典
• 错误页面暴漏信息
• Mysql错误
• php错误
• 框架错误
• 探针文件
• robots.txt
• phpMyAdmin
• 网站源码备份文件
• www.rar
• sitename.tar.gz
• web
• zip等
• Web控制台泄漏Web控制台常常被用于网站后台或者Web容器控制台中,其不仅仅局限于容器或者网站管理后台,还包括一些数据库默认地址等。常见的Web控制台:
Tomcat
http://x.x.x.x/manager/html
http://x.x.x.x:8080/manager/html
默认账号:
admin/admin、admin/空密码
Axis2
http://x.x.x.x/axis2-admin/
默认账号:
admin/axis3
Weblogic
http://x.x.x.x:7001/console
http://x.x.x.x:port/console
WebSphere
http://x.x.x.x:9060/ibm/console
https://x.x.x.x:9043/ibm/console/logon.jsp
默认账号:admin/admin
Oracle
http://x.x.x.x:5500/em
Mongodb
http://x.x.x.x:28017
HP system managent
http://x.x.x.x:2381/cpqlogin.php?error=100&serverity=4
Service Registry
http://x.x.x.x:port/soar
port默认为6060
Jboss
http://x.x.x.x/jmx-console/
http://x.x.x.x/web-console/
默认无需登录,或admin/admin
Apache
http://x.x.x.x/server-status
普元
http://x.x.x.x/eosmgr
默认账号:
sysadmin/000000
网络信息
• DNS域传送漏洞
• 运维监控系统弱口令
• 网络拓扑泄漏
• zabbix弱口令
• zabbix sql注入等
第三方软件应用
• github中源码、数据库、邮箱密码泄漏
• 搜索类似:smtp 163 password关键字
• GISL等工具
• 网盘中敏感数据泄漏
• 员工不小心将敏感文件上传至网盘
• QQ群敏感数据泄漏
• 员工不小心上传敏感文件至QQ群
工具
GISL
下载地址:https://github.com/FeeiCN/GSIL 通过该工具可以对Github上自己关心的敏感信息进行检测分析,主要是公司的敏感开发代码、测试代码等,同时可以发现一些泄漏到Github的账号、密码等敏感信息,GSIL通过提前设置的关键字分析,当检测到敏感关键字后,将发现的敏感信息通过邮件发送到指定的接收邮箱中。JSFinder
下载地址:https://github.com/Roc-L8/JSFinderPlus JSFinder是一款用做快速在网站的js文件中提取URL,子域名的工具。功能有:多线程爬虫、支持深度爬取(爬取提取出的所有URL)、常见高危目录爆破、敏感信息(手机号、身份证号码等)识别、生成html报告方便验证。ARL
下载地址:https://github.com/TophantTechnology/ARL (暂时只支持Docker) 此工具旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面。能够做到:Web站点指纹识别、Github关键字监控、文件泄漏等风险监测、IP/IP段资产整理等。whatweb
下载地址:https://github.com/urbanadventurer/WhatWeb WhatWeb是一个开源的网站指纹识别软件,可识别Web技术,包括内容管理系统(CMS)、博客平台、统计/分析包、Javascript库、服务器和嵌入式设备等。有超过1000个插件,每个插件都能识别不同的东西。WhatWeb还标识版本号、电子邮件地址、账户ID、Web框架模块、SQL错误等。Whatweb是基于ruby语言开发,因此可以安装在具备ruby环境的系统中,目前支持Windows/Max OSX/Linux,kali默认有WhatWeb。可定制化HTTP头、可进行基础的认证设置、支持批量扫描网站等。Google Hacking
最一手的资料就在官网:https://www.exploit-db.com/google-hacking-database 利用搜索引擎有针对性的搜索信息来对网络入侵的技术和行为。搜索引擎对于搜索的关键字提供了很多种语法,构造出特殊的关键字,能够快速全面的让攻击者挖掘到有价值的信息。
轻量级的搜索可搜索出一些遗留后门、不想被发现的后台入口;中量级的搜索可搜索出一些用户信息泄露、源代码泄露、未授权访问等等;重量级的则可能是mdb文件下载、CMS 未被锁定install页面、网站配置密码、SQL注入、远程文件包含漏洞等重要信息。敏感路径:
intitle:index.of "parent directory"
"Index of / " + password.txt
敏感文件
inurl:admin inurl:userlist
intitle:"index of" "*.passwords.txt"
filetype:sql "MySQL dump" (pass|password|password|pwd)
敏感页面
intitle:"Nessus Scan Report" ext:html
intitle:"Cacti" AND inurl:"/monitor/monitor.php"
Wappalyzer
它是一款优秀的网站技术栈识别工具,可以识别网站上的技术,包括内容管理系统、电子商务平台、JavaScript框架、分析工具、打包工具等等。安装此扩展工具之后,点击扩展程序图标,就可以自动识别。Hakrawler
下载地址:https://github.com/hakluke/hakrawler 这是一款针对安全人员的URL快速收集工具,该工具主要通过对目标应用进行爬取、查询某些记录了以往网络数据的服务器、解析robots.txt和sitemap.xml文件来提取URL,能够从目标应用提取出所有的URL端点。此外它还会对找到的任何子域进行收集,所以它可能有助于发现一些意外的目标。0x04 测试过程
测试方法:
1. 检测形式多样,工具爬虫扫描得到敏感文件的路径,从而找到敏感数据,主要还是通过关键词爆破;
2. 手工挖掘,根据Web容器或者网页源代码的查看,Github找到敏感信息。
测试案例1
打开网页后即可查看到一个example页面,根据Wappalyzer显示,该页面使用了Jetty9.4.40。Eclipse Jetty是一个开源的servlet容器,它为基于Java的Web容器提供运行环境,而Jetty Servlets是Jetty提供给开发者的一些通用组件。正常通过/static?/WEB-INF/web.xml无法访问到敏感文件web.xml( WEB-INF 目录中的文件会泄露有关 Web 应用程序实施的敏感信息)。
对字母W进行双重URL编码,即可绕过限制,访问web.xml。访问“/static?/%2557EB-INF/web.xml”即可。
此案例为CVE-2021-28169漏洞。在9.4.40, 10.0.2, 11.0.2版本前,Jetty Servlets中的“ConcatServlet、WelcomeFilter”类存在多重解码问题,如果开发者主动使用了这两个类,攻击者可以利用其访问WEB-INF目录下的敏感文件,造成配置文件及代码泄露。Jetty还存在以下漏洞:CVE-2021-28164,影响版本为9.4.37。CVE-2021-34429,影响版本为“9.4.37-9.4.42、10.0.1-10.0.5、11.0.1-11.0.5”。
测试案例2
含有大量密码本,随机下载一个。
密码本中包含网站地址、用户名、密码、邮箱等敏感信息。
测试案例3
根据Wapppalyzer得知系统使用了SonarQube。SonarQube 是一个开源代码质量管理和分析审计平台,支持包括 Java、C#、C/C++、PL/SQL、Cobol、JavaScript、Groovy 等二十余种编程语言的代码质量管理,可以对项目中的重复代码、程序错误、编写规范、安全漏洞等问题进行检测,并将结果通过 SonarQube Web 界面进行呈现。直接访问api/settings/values,可以发现明文 SMTP、SVN 和 GitLab 凭据。
直接访问/api/webservices/list ,可导致信息泄露。
0x05 风险分析
敏感信息泄漏可能会产生直接或间接的影响,具体取决于获取的信息内容以及获取的人。敏感信息泄漏会造成以下危害:
1. 内网IP泄漏:攻击者会渗透进内网,扫描内网开启的服务,使用file、gopher、dict协议读取本地文件、执行命令等等扩大战果,对内网造成危害;
2. 数据库信息泄漏:攻击者知道数据库类型、版本、账号等信息,会降低攻击难度;
3. 网站调试信息泄漏:会使攻击者知道网站编程语言、使用的框架等信息;
4. 网站目录结构泄漏:会泄漏敏感文件;
5. 电子邮件泄漏:邮件泄漏会造成垃圾邮件的骚扰、邮件钓鱼,攻击者可获取更多信息扩大危害;
6. 账号密码泄漏:导致攻击者直接操作后台或数据库;
7. 源码泄漏:攻击者可进行代码审计分析出其他更多的漏洞;
0x06 加固建议
1. 禁止在代码中存储敏感数据 禁止在代码中存储如数据库连接字符串、口令和密钥之类的敏感数据,这样容易导致泄密。
2. 禁止密钥或者账号的口令以明文方式存储在数据库或者文件中 密钥或者账号的口令必须经过加密存储。例外情况,如果web容器的配置文件中只能以明文方式配置连接数据库的用户名和口令,那么就不用强制遵循该规则,将该配置文件的属性改为只有属主可读写;
3. 禁止在Cookie中以明文形式存储敏感数据:Cookie信息容易被窃取,尽量不要在Cookie中存储敏感数据;如果条件限制必须使用Cookie存储敏感信息时,必须先对敏感信息加密再存储到Cookie;
4. 禁止在隐藏域中存放明文形式的敏感数据;
5. 禁止用自己开发的加密算法,必须使用公开、安全的标准加密算法;
6. 禁止在日志中记录明文的敏感数据:禁止在日志中记录明文的敏感数据(如口令、会话标识等),防止敏感信息泄漏;
7. 禁止带有敏感数据的Web页面缓存:带有敏感数据的Web页面都应该禁止缓存,以防止敏感信息泄漏或通过代理服务器上网的用户数据互窜问题。
8. 应根据业务特点定义出系统存储的敏感信息;
9. 敏感信息在存储、传输、显示时应进行安全处理,可采用的处理方式为加密或脱敏;
10. 敏感信息不应使用GET方式提交到服务器;
11. 用户密码为最高级别的敏感信息,在存储、传输、显示时都必须加密;
12. 需要选择可靠的加密算法,优先选择不对称加密算法,不得使用Base64等编码方式进行加密;
13. 对于一些系统默认报错页面应重新进行设计自定义报错页面,以免暴露系统敏感信息。
14. 控制台:对于必须暴露于公网或者其他网络中的控制台地址,则为其地址做访问名单措施,可通过过滤器实现。或修改控制台默认用户名、密码、端口、路径,并为其控制台设置强壮的口令,防止可被恶意或猜解到。
参考:https://cloud.tencent.com/developer/article/1969038
https://www.freebuf.com/articles/web/228033.html
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。